﻿using socialnetworkApp.Domain;
using socialnetworkApp.Domain.Dto.Input;
using socialnetworkApp.Domain.Dto.Output;
using socialnetworkApp.Domain.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace socialnetworkApp.Service.UsersService
{
    public interface IUserService
    {
        Task<ResponseResult<string>> UpdateNickname(UsersUpdateInput inputDto);

        Task<ResponseResult<string>> UpdateSex(UsersUpdateInput inputDto);

        Task<ResponseResult<string>> UpdateEmail(UsersUpdateInput inputDto);

        Task<ResponseResult<string>> UpdateSignature(UsersUpdateInput inputDto);

        /// <summary>
        /// 邮箱和登录
        /// </summary>
        /// <param name="userLoginInput"></param>
        /// <returns></returns>
        Task<ResponseResult<LoginInfoOutput>> UserLogin(UserLoginInput userLoginInput);
        /// <summary>
        /// 验证码登录
        /// </summary>
        /// <param name="userLoginInput"></param>
        /// <returns></returns>
       Task<ResponseResult<LoginInfoOutput>> UserValidateCodeLogin(UserLoginInput userLoginInput);
        /// <summary>
        /// 用户请求发送验证码
        /// </summary>
        /// <param name="userLoginInput"></param>
        /// <returns></returns>
      ResponseResult<string> UserSendValidateCode(UserLoginInput userLoginInput);

        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <param name="Id"></param>
        /// <returns></returns>
        Task<ResponseResult<UserInfoOutput>> GetUserInfo(GetUserIfoInput input);

        Task<ResponseResult<List<UserFriendsListOutput>>> GetFriendsList(GetUserIfoInput userIfoInput);



        Task<ResponseResult<string>> UpdateUserRoutesAndButtonsAndRoles(UsersUpdateInput usersUpdateInput);
    }
}
